From 3bb515606451f168c4af47d6f489f750c6e16699 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Wed, 15 Jun 2005 20:26:42 +0000 Subject: [PATCH] bitkeeper revision 1.1709.1.10 (42b08f028deGQkb0GcmyBpOwUB9Rjw) More hyperprivops (slow for now) Signed-off-by: Dan Magenheimer --- xen/arch/ia64/privop.c | 25 ++++++++++++++++++++++++- xen/arch/ia64/process.c | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/xen/arch/ia64/privop.c b/xen/arch/ia64/privop.c index 1f50ea2448..99f57a13a1 100644 --- a/xen/arch/ia64/privop.c +++ b/xen/arch/ia64/privop.c @@ -748,10 +748,16 @@ priv_emulate(VCPU *vcpu, REGS *regs, UINT64 isr) #define HYPERPRIVOP_ITC_D 0x5 #define HYPERPRIVOP_ITC_I 0x6 #define HYPERPRIVOP_SSM_I 0x7 -#define HYPERPRIVOP_MAX 0x7 +#define HYPERPRIVOP_GET_IVR 0x8 +#define HYPERPRIVOP_GET_TPR 0x9 +#define HYPERPRIVOP_SET_TPR 0xa +#define HYPERPRIVOP_EOI 0xb +#define HYPERPRIVOP_SET_ITM 0xc +#define HYPERPRIVOP_MAX 0xc char *hyperpriv_str[HYPERPRIVOP_MAX+1] = { 0, "rfi", "rsm.dt", "ssm.dt", "cover", "itc.d", "itc.i", "ssm.i", + "=ivr", "=tpr", "tpr=", "eoi", "itm=", 0 }; @@ -797,6 +803,23 @@ ia64_hyperprivop(unsigned long iim, REGS *regs) case HYPERPRIVOP_SSM_I: (void)vcpu_set_psr_i(v); return 1; + case HYPERPRIVOP_GET_IVR: + (void)vcpu_get_ivr(v,&val); + regs->r8 = val; + return 1; + case HYPERPRIVOP_GET_TPR: + (void)vcpu_get_tpr(v,&val); + regs->r8 = val; + return 1; + case HYPERPRIVOP_SET_TPR: + (void)vcpu_set_tpr(v,regs->r8); + return 1; + case HYPERPRIVOP_EOI: + (void)vcpu_set_eoi(v,0L); + return 1; + case HYPERPRIVOP_SET_ITM: + (void)vcpu_set_itm(v,regs->r8); + return 1; } return 0; } diff --git a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c index 670d30d071..a26194d8f3 100644 --- a/xen/arch/ia64/process.c +++ b/xen/arch/ia64/process.c @@ -754,7 +754,7 @@ if (!running_on_sim) { printf("SSC_OPEN, not implemented on hardware. (ignoring vcpu_set_gr(current,8,-1L); break; default: - printf("ia64_handle_break: bad ssc code %lx, iip=%p\n",ssc,regs->cr_iip); + printf("ia64_handle_break: bad ssc code %lx, iip=%p, b0=%p\n",ssc,regs->cr_iip,regs->b0); break; } vcpu_increment_iip(current); -- 2.30.2